var User_Detail_Loader = function () {

    var initModals = function () {
       
        $.fn.modalmanager.defaults.resize = true;
        $.fn.modalmanager.defaults.spinner = '<div class="loading-spinner fade" style="width: 200px; margin-left: -100px;"><img src="assets/img/ajax-modal-loading.gif" align="middle">&nbsp;<span style="font-weight:300; color: #eee; font-size: 18px; font-family:Open Sans;">&nbsp;Đang tải...</span></div>';

        var $modal = $('#ajax-modal');
 
        $('#modal_ajax_btn_add_dears').on('click', function(){
            // create the backdrop and wait for next modal to be triggered
            $('body').modalmanager('loading');
		 
            $modal.load('user_detail_dear_modal.php', 'action=insert&userid=' + $(this).attr('userid'), function(){
                $modal.modal().on("hidden", function() {
                    $modal.empty();
                });
            });
        });
 
        $('.modal_ajax_btn_update_dears').on('click', function(){
            // create the backdrop and wait for next modal to be triggered
            $('body').modalmanager('loading');
		 
            $modal.load('user_detail_dear_modal.php', 'action=update&dearid=' + $(this).attr('dearid'), function(){
                $modal.modal().on("hidden", function() {
                    $modal.empty();
                });
            });
        });
 
        $('#modal_ajax_btn_add_brother').on('click', function(){
            // create the backdrop and wait for next modal to be triggered
            $('body').modalmanager('loading');
		 
            $modal.load('user_detail_brother_modal.php', 'action=insert&userid=' + $(this).attr('userid'), function(){
                $modal.modal().on("hidden", function() {
                    $modal.empty();
                });
            });
        });
    }
    
    var handleValidation1 = function() {

        var form1 = $('#form-profile');
        var error1 = $('.alert-error', form1);

        form1.validate({
            errorElement: 'span', //default input error message container
            errorClass: 'help-inline', // default input error message class
            focusInvalid: false, // do not focus the last invalid input
            ignore: "",
            rules: {
                username: {
                    minlength: 10,
                    required: true
                },
                birthday: {
                    regex: /(\d{2})-(\d{2})-(\d{4})/
                },
                baptism_date: {
                    regex: /[0-9][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9]/
                },
                eucharist_date: {
                    regex: /[0-9][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9]/
                },
                confirmation_date: {
                    regex: /[0-9][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9]/
                },
                email: {
                    email: true
                }
            },
            messages: {
                username: {
                    minlength: 'Tối thiểu 10 ký tự',
                    required: 'Bắt buộc nhập'
                },
                email: {
                    email: 'Email không hợp lệ'
                }
            },
            invalidHandler: function (event, validator) { //display error alert on form submit              
                error1.show();
                App.scrollTo(error1, -200);
            },
            highlight: function (element) { // hightlight error inputs
                $(element)
                .closest('.help-inline').removeClass('ok'); // display OK icon
                $(element)
                .closest('.control-group').removeClass('success').addClass('error'); // set error class to the control group
            },
            unhighlight: function (element) { // revert the change done by hightlight
                $(element)
                .closest('.control-group').removeClass('error'); // set error class to the control group
            },
            success: function (label) {
                label
                .closest('.control-group').removeClass('error').addClass('success').end()
                .remove(); // set success class to the control group
            },
            submitHandler: function (form) {
                error1.hide();
                
                var tmp_string = $('#birthday', form1).val();
                if (tmp_string != '') {
                    tmp_string = new Date(tmp_string.replace(/(\d+)-(\d+)-(\d+)/, '$3-$2-$1'));
                    $('#birthday', form1).val($.datepicker.formatDate('yy-mm-dd', tmp_string));
                }
                
                var tmp_string = $('#baptism_date', form1).val();
                if (tmp_string != '') {
                    tmp_string = new Date(tmp_string.replace(/(\d+)-(\d+)-(\d+)/, '$3-$2-$1'));
                    $('#baptism_date', form1).val($.datepicker.formatDate('yy-mm-dd', tmp_string));
                }
                
                var tmp_string = $('#eucharist_date', form1).val();
                if (tmp_string != '') {
                    tmp_string = new Date(tmp_string.replace(/(\d+)-(\d+)-(\d+)/, '$3-$2-$1'));
                    $('#eucharist_date', form1).val($.datepicker.formatDate('yy-mm-dd', tmp_string));
                }
                
                var tmp_string = $('#confirmation_date', form1).val();
                if (tmp_string != '') {
                    tmp_string = new Date(tmp_string.replace(/(\d+)-(\d+)-(\d+)/, '$3-$2-$1'));
                    $('#confirmation_date', form1).val($.datepicker.formatDate('yy-mm-dd', tmp_string));
                }

                form.submit();
            }
        });
    }
        
    var handleValidation2 = function() {

        var form2 = $('#form-password');
        var error2 = $('.alert-error', form2);

        
        form2.validate({
            errorElement: 'span', //default input error message container
            errorClass: 'help-inline', // default input error message class
            focusInvalid: false, // do not focus the last invalid input
            ignore: "",
            rules: {
                passwd: {
                    required: true
                },
                newpasswd: {
                    minlength: 6,
                    regex: /(?=.*\d)(?=.*[a-zA-Z]).{6,}/,
                    required: true
                },
                retypepasswd: {
                    minlength: 6,
                    required: true,
                    equalTo : "#newpasswd"
                }
            },
            messages: {
                passwd: {
                    minlength: 'Tối thiểu 6 ký tự',
                    required: 'Bắt buộc nhập',
                    regex: "Mật Khẩu phải chứa ký tự số <strong>0-9</strong> và chữ cái <strong>a-Z</strong>"
                },
                newpasswd: {
                    minlength: 'Tối thiểu 6 ký tự',
                    required: 'Bắt buộc nhập',
                    regex: "Mật Khẩu phải chứa ký tự số <strong>0-9</strong> và chữ cái <strong>a-Z</strong>"
                },
                retypepasswd: {
                    minlength: 'Tối thiểu 6 ký tự',
                    required: 'Bắt buộc nhập',
                    equalTo : "Chưa khớp với Mât Khẩu Mới"
                }
            },
            invalidHandler: function (event, validator) { //display error alert on form submit              
                error2.show();
                App.scrollTo(error2, -200);
            },
            highlight: function (element) { // hightlight error inputs
                $(element)
                .closest('.help-inline').removeClass('ok'); // display OK icon
                $(element)
                .closest('.control-group').removeClass('success').addClass('error'); // set error class to the control group
            },
            unhighlight: function (element) { // revert the change done by hightlight
                $(element)
                .closest('.control-group').removeClass('error'); // set error class to the control group
            },
            success: function (label) {
                label
                .closest('.control-group').removeClass('error').addClass('success').end()
                .remove(); // set success class to the control group
            },
            submitHandler: function (form) {
                error2.hide();
                form.submit();
            }
        });
    }

    return {
        init: function () {
            
            $.datepicker.regional['vn'] = {
                monthNamesShort: ['Tháng 1','Tháng 2','Tháng 3','Tháng 4','Tháng 5','Tháng 6','Tháng 7','Tháng 8','Tháng 9','Tháng 10','Tháng 11','Tháng 12'],
                dayNamesMin: ['Hai','Ba','Tư','Năm','Sáu','Bảy','CN'],
                dateFormat : 'dd-mm-yy',
                changeMonth: true,
                changeYear: true
            };
        
            $.datepicker.setDefaults($.datepicker.regional['vn']);
            $(".datepicker").datepicker();
            
            jQuery.validator.addMethod("regex", function (value, element, regexp) {
                var re = new RegExp(regexp);
                return this.optional(element) || re.test(value);
            },
            "Giá trị không hợp lệ"
            );
        
            initModals();
            handleValidation1();
            handleValidation2();
        }
    };
}();